﻿using Levfier.Proccessors.Parameters;
using System.Collections.Generic;

namespace Levfier.GUI.EditorControls.Parameters
{
    /// <summary>
    /// パラメータに対応する画面パーツ
    /// </summary>
    public interface IParameterControl
    {
        /// <summary>
        /// 上流パラメータチェインコントロールを接続する
        /// </summary>
        /// <param name="chainControl">接続対象コントロール</param>
        void SetParameterChainControl(IDrawable chainControl);

        /// <summary>
        /// 上流パラメータチェインコントロールを削除する
        /// </summary>
        /// <param name="chainControl">削除対象コントロール</param>
        void RemoveParameterChainControl(IDrawable chainControl);

        /// <summary>
        /// パラメータを設定する
        /// </summary>
        /// <param name="parameters">パラメータ</param>
        void SetParameters(IDictionary<string, ProccessParameter> parameters);

        /// <summary>
        /// 設定できる値の最大値
        /// </summary>
        double MaxValue { get; set; }

        /// <summary>
        /// 設定できる値の最小値
        /// </summary>
        double MinValue { get; set; }

        /// <summary>
        /// 現在の値
        /// </summary>
        //double Value { get; set; }
    }
}
